Many computers utilize a firmware, such as a basic input/output system (“BIOS”), when powering on in order to prepare the computer to recognize and control various computing devices within the computer or connected to the computer. Such a firmware is typically stored on a non-volatile memory device within the computer. The firmware can be implemented by various firmware components, which are independent pieces of program code that provide some specific functionality within the firmware. For example, a firmware can include a component that provides support for a specific processor created by a specific manufacturer. Other types of components might also be utilized to support other types of hardware. Because of the virtually endless computer hardware configurations and manufacturers, a firmware is typically customized by including components that support varying computer configurations.
A firmware project is a firmware implementation that is tailored to a particular motherboard configuration and/or other types of hardware and/or software within a computer. A firmware project also includes a number of firmware components to support the different hardware components and to provide other types of functionality. The number and types of firmware components included with any given firmware project depends upon the various computing elements within the target computer for which the firmware is created and, potentially, other types of functionality that is desired to be provided by the computer. Consequently, when building a new firmware project for a specific computer configuration, many different firmware components will be utilized.
In some cases, the firmware components added to a firmware project are incompatible with one another. In other cases, firmware components might be added to a firmware project that are dependent upon other firmware components that are not present in the project. In either case, it might not be possible to build the firmware project or, once built, the firmware might operate incorrectly. It can, however, be difficult for a software developer to determine when components upon which other components are dependent are missing from a firmware project or when incompatible firmware components are present in a firmware project.
It is with respect to these considerations and others that the disclosure made herein is provided.